Ion IVAN Ion IVAN Ion IVAN
Examenul

Examenul la structuri de date este ceva mai dificil pentru ca:

  • necesita creativitate;
  • presupune experienta in a programa in limbajul C++;
  • fiecare subiect trebuie analizat;
  • trebuie identificate procedurile ce trebuie scrise;
  • necesita o foaie de hartie pe care studentul trebuie sa scrie idei legate de solutia aleasa;
  • abordarea este din aproape in aproape, de la general spre detaliu;
  • nu se folosesc automatismele transferand solutia de la o problema la alta;
  • din enunt se vede care este solutia;
  • structurile de date sunt impuse din enunt sau trebuie aleasa structura cea mai adecvata;
  • mai intai se dfinesc datele de intrare, apoi se stabilesc prelucrarile si numai in final sunt identificate modalitatile de obtinere a rezultatelor;
  • enuntul subiectului este cel care determina structura aplicatiei care va fi rulata pe calculator;
  • numai cine a rulat multe programe cap-coada va fi si cel care va face acest lucru si la examen;
  • scrierea programului se face interactionand cu foaia de hartie pe care sunt scrise suficiente detalii legate de campuri, structura aplicatiei, procedurile ce trebuie scrise;
  • scrierea programului se face gradual, cu lansarea in executie si cu afisarea de rezultate intermediare, fara a se ajunge la un text sursa de sute de linii despre care nu se stie cu exactitate ce si cum;
  • se scrie programul apelator cu multe afisari de mesaje;
  • se scriu scheletele procedurilor, cu multe mesaje ce se afisaza;
  • se lanseaza in executie si se vede ca acest schelet de program este exact ce cere problema, asa cum se face la o cladire pe schelet metalic, obtinandu-se o imagine completa a acesteia;
  • se incepe introducerea elementelor de completare, definind structuri de date si alocand variabile;
  • se trece la realizarea initializarilor, definind fisiere de tipul cerut prin enuntul problemei;
  • datele initiale vor avea valori cu care se lucreaza usor pentru a verifica daca programul face bine sau nu calculele; daca se calculeaza o medie aritmetica, valorile initiale vor fi in fisier 1,2,3,4,...,n pentru ca suma primelor n numere naturale este n(n+1)/2 iar suma impartia la n va da n+1;
  • cu creionul se scriu si rezultatele finale ce trebuie obtinute, prin rularea programului;
  • pe foaia de hartie se afla desenat mecanismul de creare a structurii ceruta in enunt si dupa acel mecanism se scrie si procedura de creare a structurii; se are in vedere initializarea elementelor eventual de la tastatura sau dintr-un fisier, depinde cum cere enuntul subiectului;
  • tot timpul se mai trece in executie pentru a vedea analizand rezultatele intermediare afisate daca programul executa ceea ce se doreste;
  • daca s-a creat o structura, va fi scrisa procedura de traversare cu afisare pentru a vedea ca intr-adevar structura a fost creata;
  • se scriu procedurile de prelucrare, exact asa cum cere enuntul problemei; prelucrarile presupun traversari de structuri si cautari de elemente in structuri; inseamna ca pe hartie se afla deja scrise informatii legate de aceste proceduri, ce parametri au, ce returneaza;
  • se lanseaza in executie programul se se fac corectii pentru a obtine realutatele asteptate;
  • in timpul alocat examenului trebuie sa existe cat mai multe componente ce definesc problema de rezolvat care sa se afle in executie si mai ales care sa ofere rezultate identice cu cle stabilite pe foaia de hartie;
  • foaia de hartie cu insemnarile, joaca rol de specificatii de programare, fiind esentiala in activitatea de scriere de texte sursa, care nu se scriu din memorie, ci analizand fiecare detaliu din enunt, judecand pas cu pas, logic detaliile enuntului si facand legaturi cu ceea ce s-a studiat la disciplina de structuri de date.

    Modul defectuos ce caracterizeaza sistemul educational preuniversitar a facut ca elevul sa fie directionat spre memorarea de rezumate la literatura, la istorie, la geografie, peste tot adica, existand obsesia notei finale dupa care se face repartizarea la liceu. Mai este si problema meditatiilor care tot rezumate si memorare inseamna. Elevul este astfel directionat spre o tehnica de instruire necreativa, defectuoasa.
    A fi creativ inseamna a avea cateva notiuni de baza, principii de elaborare software si a da solutii oricarei probleme bazandu-se pe acestea, fara a pleca de la ideea existentei unui program memorat care trebuie reprodus. este adevarat ca programatorul isi creaza unele automatisme in a scrie secvente de program care se repeta de la un program la altul, dar asta nu inseamna ca toata munca lui consta in a insira secvente invatate pe dinafara. Regulile pe care si le defineste arata ca:

  • programul principal se scrie primul si include definiri de variabile, initializari, prelucrari si afisari de rezultate;
  • prelucrarile inseamna apeluri de proceduri si programatorul stabileste logic listele de parametri;
  • se afisaza valori ale parametrilor la intarea in procedura;
  • se afisaza ceea c procedura returneaza;
  • afisarile se transforma in comentarii dupa ce programul intra in executie curenta la utilizatori;
  • cand se lucreaza cu structuri dinamice trebuie gestionati pointerii pentru a nu apare situatii care determina lucru cu variabile nealocate sau alocate si neinitializate; este de dorit ca imediat dupa alocare pointerii din variabila alocata sa fie initializati cu NULL;
  • fiecare problema inseamna altceva si programatorul trebuie sa fie pregatit pentru o astfel de abordare, caci nimeni nu plateste un sac de bani pentru a se face software care exista deja;
  • enuntul oricarei probleme are in el o secventialitate ce se urmareste si in elaborarea programului; trebuie numai ca programatorul sa citeasca corect enuntul specificatiilor si atat;
  • programatorul trebuie sa identifice acele componente ale problemei de rezolvat pe care le-a inteles cel mai bine, pe care le considera mai usoare si sa treaca la scrierea de proceduri pentru ele; datele initiale ale acelor proceduri vor di generate de programator; in realitate acelea sunt rezultate returnate de alte proceduri; cum programatorul nu are scrise acele proceduri va face ipoteze si va merge mai departe;
  • tot timpul ceea ce se scrie se testeaza pentru a trece la un pas urmator daca si numai daca totul este perfect; daca raman erori de compiulare sau de executie si se transforma in comentarii secvente, eeste similar cu ascunderea gunoiului sub pres; in final, tot programatorul este cel care va trebui sa depaneze; un program mai simplu este mai usor de depanat decat un program in care apar erori cu cauze compuse, rezultate din agregari de executii de proceduri eronate.

    Fiecare student trebuie sa traiasca singur evenimentele ce decurg din invatarea structurilor de date, cand preia din carti proceduri, cand le modifica si incearca sa revolve propriile-i probleme. Important este ca el sa-si dea seama ca multe lucruri se regasesc de la o structura la alta, ca daca face definiri corecte, va gasi simplitatea abordarilor, care il reprezinta pe el. Nu este ca la biserica, atunci cand un credincios face ceea ce fac cei din fata lui. Programatorul are problema lui, are personalitatea lui, are fundamentele lui practice, are experienta lui si toate acestea determina modul lui personal de a aborda orice problema. Totul este ca abordarile sa fie corecte, nefiind inspirate de fac asa ca asa vreau eu!, ci determinate de a invata de greselile proprii dar mai ales din greselile altora, ca singura modalitate de a progresa.